package com.linkdood.app.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.linkdood.app.domain.UploadFile;
import com.linkdood.app.dto.UploadFileDTO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UploadFileMapper extends BaseMapper<UploadFile> {

    /**
     * @param name             文件名
     * @param temp             是否是临时文件
     * @param delete           是否删除
     * @param pageSkip         分页参数
     * @param pageSize         分页参数
     * @param sortFiled        排序字段
     * @param sortType         排序类型
     * @param currentAccountId 当前用户 id
     * @return 上传的文件列表
     */
    List<UploadFileDTO> selectAccountFileByParam(@Param("name") String name,
                                                 @Param("temp") Integer temp,
                                                 @Param("delete") Integer delete,
                                                 @Param("pageSkip") Long pageSkip,
                                                 @Param("pageSize") Integer pageSize,
                                                 @Param("sortFiled") String sortFiled,
                                                 @Param("sortType") String sortType,
                                                 @Param("currentAccountId") String currentAccountId);

    /**
     * @param name             文件名
     * @param temp             是否是临时文件
     * @param delete           是否删除
     * @param currentAccountId 当前用户 id
     * @return 列表数量
     */
    long selectCountByParam(@Param("name") String name,
                            @Param("temp") Integer temp,
                            @Param("delete") Integer delete,
                            @Param("currentAccountId") String currentAccountId);

    /**
     * @param temp             是否是临时文件
     * @param delete           是否删除
     * @param currentAccountId 当前用户 id
     * @param fileMd5          文件MD5
     * @param name             文件名
     * @return 文件列表
     */
    long selectCurrentUserUnDeletedUploadFile(@Param("temp") Integer temp,
                                              @Param("delete") Integer delete,
                                              @Param("currentAccountId") String currentAccountId,
                                              @Param("fileMd5") String fileMd5,
                                              @Param("name") String name);
}
